package com.ruoyi.im.mapper;

import com.ruoyi.im.domain.UserGroup;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 用户群管理 数据层
 *
 * @author ruoyi
 * @date 2018-11-06
 */
public interface UserGroupMapper {
    /**
     * 查询用户群管理信息
     *
     * @param id 用户群管理ID
     * @return 用户群管理信息
     */
    public UserGroup selectUserGroupById(Long id);

    /**
     * 查询用户群管理列表
     *
     * @param userGroup 用户群管理信息
     * @return 用户群管理集合
     */
    public List<UserGroup> selectUserGroupList(UserGroup userGroup);

    /**
     * 新增用户群管理
     *
     * @param userGroup 用户群管理信息
     * @return 结果
     */
    public int insertUserGroup(UserGroup userGroup);

    /**
     * 修改用户群管理
     *
     * @param userGroup 用户群管理信息
     * @return 结果
     */
    public int updateUserGroup(UserGroup userGroup);

    /**
     * 删除用户群管理
     *
     * @param id 用户群管理ID
     * @return 结果
     */
    public int deleteUserGroupById(Long id);

    /**
     * 批量删除用户群管理
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteUserGroupByIds(String[] ids);

    /**
     * 搜索群
     *
     * @param groupName
     * @return
     */
    List<UserGroup> findUserGroupListByLickName(@Param("type") String type, @Param("groupName") String groupName, @Param("longitude") String longitude, @Param("latitude") String latitude);

    /**
     * 查询最大的群id
     *
     * @return
     */
    String findUserGroupMaxId(@Param("userId") String userId);

    /**
     * 添加闺蜜
     *
     * @param userId       用户id
     * @param confidanteId 闺蜜id
     * @return
     */
    int insertConfidante(@Param("userId") String userId, @Param("confidanteId") String confidanteId);

    /**
     * 删除闺蜜
     *
     * @param userId       用户id
     * @param confidanteId 闺蜜id
     * @return
     */
    int deleteConfidante(@Param("userId") String userId, @Param("confidanteId") String confidanteId);

    /**
     * 查询闺蜜
     *
     * @return
     */
    List<Map<String, Object>> selectConfidante(@Param("userId") String userId);

    /**
     * 查询群聊里没有的闺蜜
     *
     * @param userId
     * @param groupId
     * @return
     */
    List<Map<String, Object>> selectNotJoinGroupConfidante(@Param("userId") String userId, @Param("groupId") String groupId);

    /**
     * 查询群聊里已有的闺蜜
     *
     * @param userId
     * @param groupId
     * @return
     */
    List<Map<String, Object>> selectJoinGroupConfidante(@Param("userId") String userId, @Param("groupId") String groupId);

    /**
     * 获取用户建群上限
     *
     * @param userId 用户ID
     * @return 上限
     */
    String getShopperId(String userId);

    /**
     * 查询还可以加入群成员数量
     * @param id
     * @return
     */
    int queryLimit(Long id);
}